package com.cs.framework.web.context;

import java.util.List;

import javax.servlet.ServletContext;

import com.cs.framework.core.context.CoreApplication;
import com.cs.framework.web.handler.Handler;
import com.cs.framework.web.handler.HandlerManager;
import com.cs.framework.web.util.WebConstant;
import com.cs.framework.web.view.View;
import com.cs.framework.web.view.ViewFactory;

/**
 * Web应用上下文
 * 
 * @author hedongzhou
 * 
 */
public class WebApplication extends CoreApplication {

	/**
	 * 处理器
	 */
	protected List<Handler> handlerList;

	/**
	 * 视图工厂
	 */
	protected ViewFactory viewFactory;

	/**
	 * servlet上下文
	 */
	protected ServletContext servletContext;

	public WebApplication(String appConfig, String moduleCommonConfig) {
		super(appConfig, moduleCommonConfig);

		// 模块上下文类型
		this.moduleClass = WebConstant.WEB_MODULE_CLASS;
	}

	/**
	 * 初始化
	 */
	public void init() {
		super.init();

		// 初始化处理器
		initHandler();

		// 初始化视图
		initView();
	}

	/**
	 * 初始化处理器
	 */
	protected void initHandler() {
		HandlerManager handlerManager = new HandlerManager();
		handlerList = handlerManager.createHandler(this);
	}

	/**
	 * 初始化视图
	 */
	protected void initView() {
		// 创建视图工厂
		viewFactory = new ViewFactory(this);
	}

	/**
	 * 获取处理器
	 * 
	 * @return
	 */
	public List<Handler> getHandlerList() {
		return handlerList;
	}

	/**
	 * 获取视图
	 * 
	 * @return
	 */
	public View getView(String viewName) {
		return viewFactory.getView(viewName);
	}

	/**
	 * 设置servlect上下文
	 * 
	 * @param servletContext
	 */
	public void setServletContext(ServletContext servletContext) {
		this.servletContext = servletContext;
	}

	/**
	 * 获取servlect上下文
	 * 
	 * @return
	 */
	public ServletContext getServletContext() {
		return servletContext;
	}

}
